/*
 =============Update phone settings example=========================
 set Defaultkeyboard value to 0
 */

var host = "135.251.222.210";
var url = encodeURI('http://' + host + '/127.0.0.1:1665/services/SettingsManager/setSettingValue?json0={"type":"QString","value":"Defaultkeyboard"}&json1={"type":"QString","value":"1"}')


var host = "localhost:8088";
var url = encodeURI('http://' + host + '/127.0.0.1:1665/services/IMEManager/startIMESession?json0={"type":"int","value":"0"}')
var url = encodeURI('http://' + host + '/127.0.0.1:1665/services/IMEManager/getIMECandidates?json0={"type":"QString","value":"session"}&json1={"type":"QString","value":"wan"}')
var url = encodeURI('http://' + host + '/127.0.0.1:1665/services/IMEManager/stopIMESession?json0={"type":"QString","value":"session"}')

/*
 */
ICTouchAPI.APIServices.SettingsManager.setSettingValue({
    params: ['Defaultkeyboard', 1],
    context: ICTouchAPI.APIServices.SettingsManager,
    callback: function (result, callbackParams) {
        console.log(result);
        console.log(callbackParams);
    },
    callbackParams: {hello: 'Hello', world: '汉'}
});


/*
 * get Defaultkeyboard setting
 */
var host = 'localhost:8088'
var url = encodeURI('http://' + host + '/127.0.0.1:1665/services/SettingsManager/getSetting?json0={"type":"QString","value":"Defaultkeyboard"}')
// run in console
ICTouchAPI.APIServices.SettingsManager.getSetting({
    params: ['Defaultkeyboard'],
    context: ICTouchAPI.APIServices.SettingsManager,
    callback: function (objSetting, callbackParams) {
        console.log(objSetting);
        console.log("callbackParams=");
        console.log(callbackParams);
    },
    callbackParams: {hello: 'Hello', world: '字'},
    sync: true
});


function Utf8ToUnicode(strUtf8) {
    var bstr = "";
    var nTotalChars = strUtf8.length; // total chars to be processed.
    var nOffset = 0; // processing point on strUtf8
    var nRemainingBytes = nTotalChars; // how many bytes left to be converted
    var nOutputPosition = 0;
    var iCode, iCode1, iCode2; // the value of the unicode.
    while (nOffset < nTotalChars) {
        iCode = strUtf8.charCodeAt(nOffset);
        if ((iCode & 0x80) == 0) // 1 byte.
        {
            if (nRemainingBytes < 1) // not enough data
                break;
            bstr += String.fromCharCode(iCode & 0x7F);
            nOffset++;
            nRemainingBytes -= 1;
        }
        else if ((iCode & 0xE0) == 0xC0) // 2 bytes
        {
            iCode1 = strUtf8.charCodeAt(nOffset + 1);
            if (nRemainingBytes < 2 || // not enough data
                (iCode1 & 0xC0) != 0x80) // invalid pattern
            {
                break;
            }
            bstr += String
                .fromCharCode(((iCode & 0x3F) << 6) | (iCode1 & 0x3F));
            nOffset += 2;
            nRemainingBytes -= 2;
        } else if ((iCode & 0xF0) == 0xE0) // 3 bytes
        {
            iCode1 = strUtf8.charCodeAt(nOffset + 1);
            iCode2 = strUtf8.charCodeAt(nOffset + 2);
            if (nRemainingBytes < 3 || // not enough data
                (iCode1 & 0xC0) != 0x80 || // invalid pattern
                (iCode2 & 0xC0) != 0x80) {
                break;
            }
            bstr += String.fromCharCode(((iCode & 0x0F) << 12)
                | ((iCode1 & 0x3F) << 6) | (iCode2 & 0x3F));
            nOffset += 3;
            nRemainingBytes -= 3;
        } else
        // 4 or more bytes -- unsupported
            break;
    }
    if (nRemainingBytes != 0) { // bad UTF8 string.
        return "";
    }
    return bstr;
}